package models

import (
	"gorm.io/datatypes"
	"time"
)

//*********** 随机插入资源数据 ***********

// Resource 资源结构体
type Resource struct {
	Id               uint      `gorm:"primaryKey"`
	Title            string    `gorm:"type:varchar(255)"`
	CoverImage       string    `gorm:"type:varchar(512)"`
	CardCoverImage   string    `gorm:"type:varchar(512)"`
	BannerCoverImage string    `gorm:"type:varchar(512)"`
	Introduction     string    `gorm:"type:text"`
	ResourceType     int       `gorm:"type:tinyint"`
	CategoryId       uint      `gorm:"type:bigint"`
	WebUrl           string    `gorm:"type:varchar(512)"`
	MediaUrl         string    `gorm:"type:varchar(512)"`
	ViewCount        uint      `gorm:"type:int unsigned;default:0"`
	LikeCount        uint      `gorm:"type:int unsigned;default:0"`
	CollectCount     uint      `gorm:"type:int unsigned;default:0"`
	ReleaseDate      time.Time `gorm:"type:datetime"`
	CreateBy         uint      `gorm:"type:bigint"`
	CreateTime       time.Time `gorm:"type:datetime"`
	UpdateBy         uint      `gorm:"type:bigint"`
	UpdateTime       time.Time `gorm:"type:datetime"`
	IsDeleted        int       `gorm:"type:tinyint;default:0"`
}

func (Resource) TableName() string {
	return "resource"
}

//*********** 获取资源数据 ***********

// ResourcePageByCateParams 分页获取指定分类资源数据 - 检索查询数据条件
type ResourcePageByCateParams struct {
	CategoryId   string `form:"categoryId"`    // 所属分类ID，传多值，用英文逗号隔开
	ResourceType string `form:"resource_type"` // 资源类型：图文1,音频2,长视频3,短视频4
	Keyword      string `form:"keyword"`       // 标题检索关键词
	IsSubCate    bool   `form:"isSubCate"`     // 是否检索子集分类
	UserID       string `form:"userId"`        // 用户id

}

// ResourcePageByTopic 分页获取指定专辑下的数据 - 检索查询数据条件
type ResourcePageByTopic struct {
	TopicId      string `form:"topicId"`      // 所属专题ID
	ResourceType string `form:"resourceType"` // 资源类型：图文1,音频2,长视频3,短视频4
	Keyword      string `form:"keyword"`      // 标题检索关键词
	UserID       string `form:"userId"`       // 用户id

}

// ResourceRes 返回资源数据结构体
type ResourceRes struct {
	ID               uint   `gorm:"column:id" json:"id"`
	Title            string `gorm:"column:title" json:"title"`
	CoverImage       string `json:"cover_image"`
	CardCoverImage   string `json:"card_cover_mage"`
	BannerCoverImage string `json:"banner_cover_image"`

	ResourceType     uint           `json:"resource_type"`
	CategoryID       uint           `json:"category_id"`
	CategoryName     string         `json:"category_name"`
	ResourceTypeName string         `json:"resource_type_name"`
	Tags             datatypes.JSON `gorm:"type:json" json:"tags"`

	TopicId    string `json:"topic_id"`
	TopicTitle string `json:"topic_title"`

	ViewCount    uint `json:"view_count"`
	LikeCount    uint `json:"like_count"`
	CollectCount uint `json:"collect_count"`

	Introduction string    `json:"introduction"`
	WebUrl       string    `json:"web_url"`
	MediaUrl     string    `json:"media_url"`
	ReleaseDate  time.Time `json:"release_date"`
	CreateBy     uint      `json:"create_by"`
	CreateTime   time.Time `json:"create_time"`
	UpdateBy     uint      `json:"update_by"`
	UpdateTime   time.Time `json:"update_time"`
	IsDeleted    int       `json:"is_deleted"`

	// 新增跟用户有关字段
	IsLike    bool `json:"is_like" gorm:"-"`    // 是否点赞
	IsCollect bool `json:"is_collect" gorm:"-"` // 是否收藏
}

// ResourceResList 返回资源数据结构体的列表结构体
type ResourceResList struct {
	List        []ResourceRes `json:"list"`
	Total       int64         `json:"total"`
	PageNum     int           `json:"pageNum"`
	PageSize    int           `json:"pageSize"`
	HasNextPage bool          `json:"hasNextPage"`
}

// *********** 获取用户浏览历史资源数据 ***********

// GetUserViewHistoryParams 获取用户浏览历史资源数据请求参数
type GetUserViewHistoryParams struct {
	// 所属分类ID,多个使用逗号隔开
	CategoryID string `json:"categoryId" form:"categoryId"`
	// 是否包含子分类数据
	IsSubCate bool `json:"isSubCate" form:"isSubCate"`
	// 标题检索关键词
	Keyword string `json:"keyword" form:"keyword"`
	// 资源类型：图文1,音频2,长视频3,短视频4
	ResourceType int64 `json:"resource_type,omitempty" form:"resource_type"`
	// 用户id
	UserID int64 `json:"userId,omitempty" form:"userId"` // 增加form标签

}

// ViewHistoryResourceRes 用户浏览历史
type ViewHistoryResourceRes struct {
	ViewLogID        uint      `json:"id" gorm:"column:view_log_id"`         // 浏览记录ID
	ResourceID       uint      `json:"resourceId" gorm:"column:resource_id"` // 资源ID
	Title            string    `json:"title"`
	CoverImage       string    `json:"cover_image"`
	CardCoverImage   string    `json:"card_cover_image"`
	BannerCoverImage string    `json:"banner_cover_image"`
	ResourceType     int64     `json:"resource_type"`
	CategoryID       int64     `json:"category_id"`
	CategoryName     string    `json:"category_name"`
	ResourceTypeName string    `json:"resource_type_name"`
	Tags             string    `json:"tags"`
	ViewCount        int       `json:"view_count"`
	LikeCount        int       `json:"like_count"`
	CollectCount     int       `json:"collect_count"`
	Introduction     string    `json:"introduction"`
	WebURL           string    `json:"web_url"`
	MediaURL         string    `json:"media_url"`
	ReleaseDate      time.Time `json:"release_date"`
	CreateTime       time.Time `json:"create_time"`
	IsLike           bool      `json:"is_like"`
	IsCollect        bool      `json:"is_collect"`
}

// ViewHistoryResourceResList 返回用户浏览历史资源数据结构体的列表结构体
type ViewHistoryResourceResList struct {
	List        []ViewHistoryResourceRes `json:"list"`
	Total       int64                    `json:"total"`
	PageNum     int                      `json:"pageNum"`
	PageSize    int                      `json:"pageSize"`
	HasNextPage bool                     `json:"hasNextPage"`
}
